#include <Arduino.h>

#if CONFIG_IDF_TARGET_ESP32
const int potPin = 34;              // ESP32: 选 ADC1 引脚，如 34/35/36/39/32/33/25/26/27
#else
const int potPin = 4;               // ESP32-S3/C3/S2: 改成你板子上带 ADC 的引脚
#endif

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);                           // 12位分辨率：0..4095
  analogSetPinAttenuation(potPin, ADC_11db);         // 满量程到 ~3.3V（读 0..4095 对应 0..约3.3V）
}

void loop() {
  // 读取一次原始值
  int raw = analogRead(potPin);                      // 0..4095

  // 可选：把原始值平滑一下，减少抖动
  static float filt = 0;
  filt = 0.85f * filt + 0.15f * raw;                 // 一阶低通

  // 可选：直接得到毫伏（需新版 ESP32 Arduino 内核）
  int mv = analogReadMilliVolts(potPin);             // 毫伏值，约 0..3300

  // 映射为百分比/角度等
  int percent = constrain(map((int)filt, 0, 4095, 0, 100), 0, 100);
  int angle   = constrain(map((int)filt, 0, 4095, 0, 180), 0, 180);

  Serial.printf("raw=%4d  filt=%6.1f  %4dmV  %3d%%  angle=%3d°\n", raw, filt, mv, percent, angle);
  delay(50);
}
